﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stddef.h>

struct S1
{
	int n;
	int m;
	int i;
};
struct S2
{
	int _n : 2;//占2个比特位
	int _m : 4;//占4个比特位
	int _i : 30;//占30个比特位
};
struct S
{
	int _a : 3;
	int _b : 4;
	int _c : 5;
	int _d : 4;
};
int main()
{
	struct S s;
	s._a = 9;
	s._a = 12;
	s._c = 5;
	s._d = 2;
	printf("%zd\n", sizeof(struct S));
	return 0;
}




//struct S
//{
//	int arr[1000];
//	int n;
//};
//
//
//void print1(struct S a)
//{
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d", a.arr[i]);
//	}
//	printf("\n");
//	printf("%d", a.n);
//}
//
//void print2(struct S* pa)
//{
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d", pa->arr[i]);
//	}
//	printf("\n");
//	printf("%d", pa->n);
//}
//
//int main()
//{
//	struct S a = { {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 10 };
//
//	print1(a);
//	print2(&a);
//	return 0;
//}
//#include <stdio.h>
//#pragma pack(1)//设置默认对⻬数为1
//struct S
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()//重置默认对齐数，恢复成8
//
//int main()
//{
//
//	printf("%d\n", sizeof(struct S));
//	return 0;
//}

//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double d;
//};
//int main()
//{
//	//printf("%d\n", sizeof(struct S1));
//	//printf("%d\n", sizeof(struct S2));
//
//	printf("S1：\n");
//	printf("%zd\n", offsetof(struct S1, c1));
//	printf("%zd\n", offsetof(struct S1, i));
//	printf("%zd\n", offsetof(struct S1, c2));
//	
//	printf("S2：\n");
//	printf("%zd\n", offsetof(struct S2, c1));
//	printf("%zd\n", offsetof(struct S2, c2));
//	printf("%zd\n", offsetof(struct S2, i));
//	return 0;
//}

//struct
//{
//	int x;
//	int y;
//}N1, N2, N3;
//
//int main()
//{
//	scanf("%d %d", &N1.x, &N1.y);
//
//	printf("%d %d\n", N1.x, N1.y);
//
//	N2 = N1;
//	printf("%d %d\n", N2.x, N2.y);
//	return 0;
//}

//struct
//{
//	int x;
//	int y;
//}N1;
//
//struct
//{
//	int x;
//	int y;
//}N2;
//int main()
//{
//	printf("请输入x，y的坐标: ");
//	scanf("%d %d", &N1.x, &N1.y);
//
//	N2 = N1;
//	printf("N1：%d %d\n", N1.x, N1.y);
//	printf("N2：%d %d\n", N2.x, N2.y);
//	return 0;
//}